import { createRouter, createWebHashHistory } from 'vue-router'
// 导入一级路由
import Login from '@/views/Login.vue'
import MainBox from '@/views/MainBox.vue'
import NotFound from '@/views/notfound/NotFound.vue'
// 导入config文件
import RoterConfig from '@/router/config'
// 导入商店全局变量
import { useRouterStore } from '@/stores/useRouterStore'
import { useUserStore } from '@/stores/useUserStore'

const router = createRouter({
  history: createWebHashHistory(),
  routes: [
    {
      path: '/login',
      name: 'login',
      component: Login
    },
    {
      path: '/mainbox',
      name: 'mainbox',
      component: MainBox
    },
  ]
})


// 路由守卫
router.beforeEach((to, from, next) => {
  // 结构RouterSotre变量
  const { isGetterRouter } = useRouterStore()
  const { user } = useUserStore()
  // 判断第一次打开的地址是否是登录界面
  if (to.name === 'login') {
    next()
  } else {
    // 判断有没有登录
    if (!user.role) {
      next({
        // 没有则跳回登录界面
        path: "/login"
      })
    } else {
      // 判断是否是第一回进入
      if (!isGetterRouter) {
        router.removeRoute('mainbox')
        configRouter()
        next({
          // 刷新时强制访问以下当前页面
          path: to.fullPath
        })
      } else {
        // 不是第一次直接就放行
        next()
      }
    }
  }
})

// 循环添加路由
const configRouter = () => {
  // 结构routerStore变量
  const { changeRouter } = useRouterStore()

  router.addRoute({
      path: '/mainbox',
      name: 'mainbox',
      component: MainBox
    })
  RoterConfig.forEach(item => {
    checkUser(item.path) && router.addRoute("mainbox", item)
  })
  // 404
  router.addRoute("mainbox", {
    path: '/:pathMatch(.*)*',
    name: 'notfound',
    component: NotFound
  })
  // 路由重定向
  router.addRoute("mainbox", {
    path: '/',
    redirect: "/index"
  })

  changeRouter(true)
}

// 检查权限
const checkUser = (item) => {
  const { user } = useUserStore()

  return user.role.rights.includes(item)

}

export default router
